
import {  ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';

import { Request, Response } from 'express';

// 异常过滤器
@Catch()           // 使用这个装饰器
export class HttpFilter implements ExceptionFilter {       // 实现接口，实现catch方法
    catch(exception: HttpException, host: ArgumentsHost) {
        
        const ctx = host.switchToHttp();

        const request = ctx.getRequest<Request>();     // 泛型类型要传进去，就会有提示

        const response = ctx.getResponse<Response>(); // 泛型类型要传进去，就会有提示

        const status = exception.getStatus();   // 得到错误状态
        response.status(status).json({
            statusCode: status,
            message: exception.message,
            success: false,
            timestamp: new Date().toISOString(),  // 记录错误时间
            path: request.url        // 记录那个接口报错的
        })
    }
}